Puma のメモリ問題
問題
Puma
を長時間使ってると、メモリ消費が凄いことになる
原因
Ruby がメモリの断片化を起こしている
対策 (2021/5/1)
コンパクション
をする
nakayoshi_fork オプションを有効にする
fork される前に GC.compact が呼ばれるようになる
jamalloc メモリアロケータを使う
Rubyアプリケーションのメモリ使用量上昇問題をjemallocを使うことで解決しました
プロダクションの Rails サーバーの利用メモリがひたすら増加していくような挙動を観測したとき、どう対応するのがよいですか?
定期的に再起動を行う
Puma Worker Killer
を使う
完全に理解はできてないが、README.md によると危険な手段であるので最終手段としたいところ。
できれば
Unicron
など他の Web サーバーを検討し、どうしても Puma じゃないとダメな時にこれを使う、とかが良いかも